Peer-to-Peer (P2P) file sharing applications account for a large fraction of the traffic on the Internet, and use of P2P file sharing applications is expected to increase in the future. Disadvantageously, however, existing P2P file sharing applications are unaware of the topology of the underlying network. As a result, a first node that is located at a first geographic location may attempt to download a file from a second node located at a second geographic location which may be quite remote from the first geographic location, even though that file may be available from one or more other nodes located closer to the first geographic location of the first node. Furthermore, the first node and second nodes may receive service from different Internet Service Providers (ISPs), such that the ISP of the first node will need to pay for the traffic required to transport the file from the second node to the first node. For example, a node located in New York City and associated with a first ISP may download a file from a node located in Tokyo and associated with a second ISP, even though another node located near New York City and associated with the first ISP also may have that file available.